public class SingleNumberII {
    public int singleNumber(int[] nums) {
        int ret = 0;
        for (int i = 0; i < 32; i++) { // 用于确定答案的每位bit
            int sum = 0;
            for (int x : nums) {
                // 对所给的所有元素第 0~31(i) bit位进行统计
                if (((x >> i) & 1) == 1) {
                    // 如果 x 第 i 位 bit 是 1, sum++
                    sum++;
                }
            }
            // 所有元素的第 i 位 bit 统计完毕后, 对其结果取余
            sum %= 3;

            if (sum == 1) { // 结果只能是 1 或者是 0
                // 修改(确定) ret 的第 i 位bit. (0 就不用修改)
                ret |= (1 << i);
            }
        }
        return ret;
    }
}
